核心变更说明:本文基于2018年版全面升级,新增DDIA深度解读、Raft可视化演示、Spanner TrueTime解析、F1分布式RDBMS、CRDT无冲突数据类型、分布式事务 Saga/TCC 模式、日志架构(Kafka/Log)、顶级会议论文追踪方法等分布式系统前沿内容。
今天分享的内容是分布式架构方面的经典图书和论文,并给出了导读文字,几乎涵盖了分布式系统架构方面的所有关键的理论知识。这些内容非常重要,是学好分布式架构的基石,请一定要认真学习。
为什么这本书如此重要?
Martin Kleppmann的这本书(豆瓣评分9.7)被公认为分布式系统领域的"圣经"。它不是简单地罗列技术,而是:
| 书名 | 作者 | 难度 | 核心价值 |
|---|---|---|---|
| 《Distributed Systems: Principles and Paradigms》 | Tanenbaum & Steen | ⭐⭐⭐⭐ | 经典教材,七大原理 |
| 《Distributed Systems for Fun and Profit》 | Mikito Takada(Mixu) | ⭐⭐ | 免费电子书,通俗易懂 |
| 《Scalable Web Architecture and Distributed Systems》 | Kate Matsudaira(收录于AOSA) | ⭐⭐ | 免费在线书,实战导向 |
| Principles of Distributed Computing(ETH Zurich课程讲义) | Roger Wattenhofer 等 | ⭐⭐⭐⭐⭐ | 算法层面,偏理论 |
Paxos是Leslie Lamport于1990年提出的分布式一致性算法,被誉为"最难理解的算法"。
Raft将共识分解为三个子问题:
推荐资源:
这三篇论文奠定了现代大数据的基础:
Dynamo: Amazon's Highly Available Key-Value Store 是NoSQL运动的开山之作。
核心贡献:
Spanner: Google's Globally-Distributed Database 是数据库领域的里程碑式论文。
TrueTime API:
// Spanner 的 TrueTime API 接口
interface TT {
// 返回一个绝对时间区间,保证包含了真实的当前时间
TTinterval now();
}
// 使用示例:实现外部一致性的事务
TTinterval timestamp = tt.now(); // 获取当前时间区间
// 执行事务...
// 提交时指定 commit timestamp >= timestamp.latest为什么 TrueTime 如此重要?
F1: The Fault-Tolerant Distributed RDBMS Supporting Google's Ad Business 展示了如何在Spanner上构建完整的SQL数据库。
F1的核心特性:
The Log: What every software engineer should know about real-time data's unifying abstraction 是Jay Kreps(Kafka联合创始人)的经典文章。
日志的核心思想:
2PC的问题:
Saga将长事务拆分为多个本地事务:
| 阶段 | 操作 | 说明 |
|---|---|---|
| Try | 预留资源 | 冻结余额/锁定库存 |
| Confirm | 确认执行 | 实际扣减 |
| Cancel | 取消执行 | 释放预留 |
跟踪分布式系统前沿最可靠的方式,是关注顶级会议的官网论文列表与获奖论文:OSDI、SOSP、NSDI、SIGCOMM、EuroSys、ATC 等。各会议官网每年都会公开完整论文集,部分还提供论文演讲视频。
下一篇文章我们将探讨分布式架构工程设计——设计原则、设计模式以及工程实践。